Boduka Codes taken from Nov, 2000


KATA

Silly mother fucking me. Can't find the kata code ;(
Instead here is the raw boduka code. Enjoy



more budoka.c


// std/guilds/budokas.c
//
/*
 * Date         Creator         Comment
* ------------ --------------- -----------------------------------------
* 1997 Feb 18  Hellbent        added titles for 300-400th level.
* 1996 Jul 25  Laggard         new query_level_skill,
*                              with same proportions as before.
* 1996 Jul 10  lotus           change levels to ( f * 3 + c * 2 ) / 4
* 1996 Jul 08  Laggard         eliminate (non-existant) starting position.
*                              eliminate some unused code.
*                              some formatting.
*                              replace set_new_level with setup_level.
*                              removed set_hp and _gp to monster (duplicated).
*                              include guild.h!
* 10 May 96    Agamemnon       Modified to use new skill hierarchy
* 04 Nov 97    Hellbent        Added the new 'kata' command.
* 07 Nov 97    Hellbent        fixed commands to use new dir structure
* 12 Nov 97    Hellbent        Added 'unhide'
* 04 Jan 98    Darsis          Removed Ambush
* 24 Jan 99    Darsis          Increased xp to max
* December    Hawk         changed * December    Hawk         changed from budoka to budoka
* 06 Apr 00    Darsis          Increased xp to max to about 290 million
*/

#include 
inherit GUILD_STANDARD;
inherit "/std/living/effects.c";
#include "bud.h"
//#include 
//#include "weapon.h"
void setup_budoka(object ob);

void setup()
{
    set_name("budoka");
    set_short("Budoka's Guild");
    set_long(
      "The budoka's guild gives you some fighting skills,"
      " along with some very stealthy combat maneuvers,"
      " and even some special magic.\n\n"
      " To join the guild,"
      " you must be one of the following races:"
      "\nHuman, Elf, Orc, or Halfling.\n");
    reset_get();
}

void set_gp( object ob )
{
    ob->set_max_gp( ob->query_skill( "fighting.combat.melee" )+
      ob->query_skill( "covert" ) + ob->query_skill( "mental.points" ) + 10 );
}
string query_gp_regen_stat() { return "dex"; }


mapping query_level_skill()
{
    return ([
      "primary" : "fighting",
      "secondary" : "covert"
    ]) ;
}


#ifndef GUILD_AUTO
int query_level(object ob)
{
    return ((int)ob->query_skill("fighting") * 3
      + (int)ob->query_skill("covert") * 2) / 4;
}
#endif


/* this figures out how much the given skill will cost to advance in
* It returns a multipler.  10 is normal.
*/
int query_skill_cost(string skill) {
    string *bits;

    bits = explode(skill, ".");
    switch( bits[0] ){
    case "covert":      return 25;
    case "faith":       return 20;
    case "fighting":    return 29;
    case "general":     return 18;
    case "magic":       return 20;
    case "occult":      return 20;
    case "mental":      return 25;
    default:            return 20;
    }
}

/* returns the maximun level that you are allowed to advance in the
 * given skill.
 */
int query_skill_max_level(string skill) {
    string *bits;

    bits = explode(skill, ".");
    switch( bits[0] ){
    case "covert":     return 200;
    case "faith":      return   5;
    case "fighting":   return 300;
    case "mental":     return 25;
    case "general":
	if ( sizeof( bits ) > 1 ) switch( bits[1] ){
	case "evaluating":    return 200;
	case "searching":
	case "perception":    return 200;
	case "smithing":      return 200;
	case "movement":
	    if ( sizeof( bits ) > 2 ) switch( bits[2] ){
	    case "swimming": return 200;
	    case "climbing": return 200;
	    }
	}
	return 20;
    case "magic":      return 5;
    case "occult":     return 5;
    default:           return 15;
    }
}
string query_cast_word() { return "focus"; }

string query_title(object player) {
    int level, u_skill, sh_skill, bl_skill;

    u_skill = player->query_skill( "fighting.combat.melee.unarmed" );
    sh_skill = player->query_skill( "fighting.combat.melee.sharp" );
    bl_skill = player->query_skill( "fighting.combat.melee.blunt" );
    level = query_level(player);
    if( player->query_property( "com_list" ) && 
      player->query_property( "com_list" )["third"] == "hide" )
    {
	switch(level){
	case 0..14: return "the Young Budoka"; break;
	case 15..24: return "the Budoka"; break;
	case 25..29: return "the Initiate of Ninjutsu"; break;
	case 30..39: return "the Disciple of Ninjutsu"; break;
	case 40..49: return "the Novice of Ninjutsu"; break;
	case 50..64: return "the Silent Strider"; break;
	case 65..79: return "the Shadowlurker"; break;
	case 80..89: return "the Shadow Walker"; break;
	case 90..99: return "the Shodan of the Unseen Arts"; break;
	case 100..119: return "the Nidan of the Unseen Arts"; break;
	case 120..139: return "the Sandan of the Unseen Arts"; break;
	case 140..159: return "the Yodan of the Unseen Arts"; break;
	case 160..189: return "the Godan of the Unseen Arts"; break;
	case 190..219: return "the Rokudan of the Unseen Arts"; break;
	case 220..249: return "the Shidan of the Unseen Arts"; break;
	case 250..279: return "the Shadow"; break;
	case 280..294: return "the Silent Shadow"; break;
	case 295..314: return "the Artisan of the Shadow"; break;
	case 315..329: return "the Silent Warrior"; break;
	case 330..349: return "the Master of the Shadows"; break;
	case 350..359: return "the Master of the Unseen Arts"; break;
	case 360..369: return "the Master of Silent Death"; break;
	case 370..389: return "the Sensei of Shadow"; break;
	case 390..400: return "the Grand Master of Ninjutsu"; break;
	default:

	    if( u_skill > sh_skill && u_skill > bl_skill )
		return "the Shadow Warrior";
	    if( sh_skill > u_skill && sh_skill > bl_skill )
		return "the Night Blade";
	    if( bl_skill > u_skill && sh_skill < bl_skill )
		return "the Shadow Master of Bojutsu";
	    return "the Grand Master of Silent Death";
	    break;
	}
    }
    else
    {
	switch(level){
	case 0..14: return "the Young Budoka"; break;
	case 15..29: return "the Budoka"; break;
	case 30..44: return "the Ryu Initiate"; break;
	case 45..59: return "the Ryu Novice"; break;
	case 60..74: return "the Ryu Disciple"; break;
	case 75..89: return "the Bushi"; break;
	case 90..104: return "the Ashigaru"; break;
	case 105..119: return "the Shodan"; break;
	case 120..134: return "the Nidan"; break;
	case 135..149: return "the Sandan"; break;
	case 150..164: return "the Yodan"; break;
	case 165..179: return "the Godan"; break;
	case 180..194: return "the Rokudan"; break;
	case 195..209: return "the Nanadan"; break;
	case 210..229: return "the Practioner of Sado"; break;
	case 230..249: return "the Chajin"; break;
	case 250..269: return "the Chi Shaper"; break;
	case 270..289: return "the Spirit Walker"; break;
 	case 290..309: return "the Chi Warrior"; break;
	case 310..329: return "the Go Master"; break;
	case 330..349: return "the Enlightened"; break;
	case 350..359: return "the Renshi"; break;
	case 360..379: return "the Kyoshi"; break;
	case 380..399: return "the Hanshi"; break;
	default :
	    if( u_skill > bl_skill && u_skill > sh_skill )
		return "the Grand Master Of Taijutsu";
	    if( sh_skill > u_skill && sh_skill > bl_skill )
		return "the Tachi of the Empire";
	    if( bl_skill > u_skill && sh_skill < bl_skill )
		return "the Tetsubo of Destruction";
	    return "the Phantom Executioner";
	    break;
	}    
}
    return "the Applicant to Ninjitsu";
}


// setup monsters only
void setup_level( object who, int new_level )
{
    if (!who)
    {
	return;
    }
    ::setup_level( who, new_level );

    //  some skills already done by default in standard
    //  who->add_skill_level("fighting", new_level);
    //  who->add_skill_level("general", new_level);
    who->add_skill_level("covert", new_level);

    who->adjust_bonus_str(4);
    who->adjust_bonus_dex(3);
    who->adjust_bonus_int(-2);
    who->adjust_bonus_wis(-3);

    if (new_level > 100)
    {
	who->adjust_bonus_str(1);
	who->adjust_bonus_dex(2);
	who->adjust_bonus_wis(1);
    }
}
int query_skill_bonus( int x, string str)



 {
    int mult, time_affect, num, skill_stuff;
    object player;

    player = previous_object();

    if( str == "fighting" ) return 0;

    if( !player->query_property( STYLE_USED ) ) return 0;

    skill_stuff = ( player->query_skill( "covert" ) + player->
      query_skill( "fighting" ) ) / 2 + player->query_skill( "mental" );
    /*
	 Hawk - make it so you have to age a bit before you get the full
	    benefit of this ability
    */
    if( time_affect = player->query_effect_arg( "bud_time" ) ) 
	skill_stuff = ( skill_stuff * time_affect ) / 4;

    num = sizeof( player->query_property( STYLE_USED ) );
    skill_stuff = skill_stuff / num;

    foreach( string type in player->query_property( STYLE_USED ) )
    {
	mult = player->query_property( STYLE_PROPERTY )[type];

	switch( type )
	{
	case "kenjutsu":
	    if( strsrch( str, "sharp" ) + 1 )
		return ( skill_stuff * mult) / 6;
	    break;
	case "daisho":
	    if( strsrch( str, "parry" ) + 1 )
		return ( ( skill_stuff * mult ) / 3 );
	    break;
	case "taijutsu":
	    if( strsrch( str, "unarmed" ) + 1 )
		return ( skill_stuff * mult) / 6;
	    break;
	case "mizu-do":
	    if( strsrch( str, "dodging.melee" ) + 1 )
		return ( skill_stuff * mult + 1 )/2;
	    break;
	case "tsuchi-do":
	    if( strsrch( str, "blunt" ) + 1 )
		return ( skill_stuff * mult ) / 6;
	    break;
 	case "kaze-do":
	    if( strsrch( str, "thrown" ) + 1 )
		return ( skill_stuff * mult ) / 5;
	    break;
	case "kakuremi":
	    if( strsrch( str, "hiding" ) + 1 )
		return ( skill_stuff * mult )/3;
	    break;
	default: return 0;
	}    
}
    return 0;
}
void start_player(){
    setup_budoka(TP);
    ::start_player();
}



1